const util = require('../../utils/util');
const TempFileService = require('../../service/admin/temp_file.service');

async function createTempFile(ctx) {
  const { userId } = util.decodeToken(ctx);
  const { sys_file_id, temp_name, url, remark } = ctx.request.body;

  if (!temp_name) {
    return util.fail(ctx, '模板名称不能为空');
  }
  if (!url) {
    return util.fail(ctx, '文件地址不能为空');
  }

  try {
    const result = await TempFileService.createTempFile({
      sys_file_id,
      temp_name,
      url,
      remark,
      create_id: userId,
      update_id: userId
    });
    util.success(ctx, { id: result.id });
  } catch (error) {
    console.error('创建模板文件错误:', error.message);
    util.fail(ctx, error.message || '创建失败');
  }
}

async function deleteTempFiles(ctx) {
  const { ids } = ctx.request.body;

  if (!Array.isArray(ids) || ids.length === 0) {
    return util.fail(ctx, '模板文件 ID 列表无效');
  }

  try {
    await TempFileService.deleteTempFiles(ids);
    util.success(ctx, '');
  } catch (error) {
    console.error('删除模板文件错误:', error.message);
    util.fail(ctx, error.message || '删除失败');
  }
}

async function updateTempFile(ctx) {
  const { userId } = util.decodeToken(ctx);
  const { id, sys_file_id, temp_name, url, remark } = ctx.request.body;

  if (!id) {
    return util.fail(ctx, '模板文件 ID 不能为空');
  }
  if (!temp_name) {
    return util.fail(ctx, '模板名称不能为空');
  }
  if (!url) {
    return util.fail(ctx, '文件地址不能为空');
  }

  try {
    await TempFileService.updateTempFile({
      id,
      sys_file_id,
      temp_name,
      url,
      remark,
      update_id: userId
    });
    util.success(ctx, '');
  } catch (error) {
    console.error('更新模板文件错误:', error.message);
    util.fail(ctx, error.message || '更新失败');
  }
}

async function getTempFileList(ctx) {
  const { page = 1, limit = 10, temp_name } = ctx.query;

  try {
    const result = await TempFileService.getTempFileList({
      page: parseInt(page),
      limit: parseInt(limit),
      temp_name
    });
    util.success(ctx, result);
  } catch (error) {
    console.error('查询模板文件列表错误:', error.message);
    util.fail(ctx, error.message || '查询失败');
  }
}

async function getTempFileInfo(ctx) {
  const { id } = ctx.query;

  if (!id || isNaN(parseInt(id))) {
    return util.fail(ctx, '模板文件 ID 无效');
  }

  try {
    const result = await TempFileService.getTempFileInfo(parseInt(id));
    util.success(ctx, result);
  } catch (error) {
    console.error('获取模板文件信息错误:', error.message);
    util.fail(ctx, error.message || '查询失败');
  }
}

async function getTempFileDropdown(ctx) {
  try {
    const result = await TempFileService.getTempFileDropdown();
    util.success(ctx, result);
  } catch (error) {
    console.error('获取模板文件下拉框错误:', error.message);
    util.fail(ctx, error.message || '查询失败');
  }
}
module.exports = {
  createTempFile,
  deleteTempFiles,
  updateTempFile,
  getTempFileList,
  getTempFileInfo,
  getTempFileDropdown
};
